Примеры альтернативных состояний в выражениях диаграммы
Эти примеры предназначены для того, чтобы продемонстрировать рекомендации по использованию альтернативных состояний разработчиками QlikView и/или опытными пользователями QlikView. Эти примеры доступны в файле: ‘Alternate States Functionality.qvw’
Синхронизация выборок между состояниями
Следующие выражения можно использовать в одной диаграмме:
- count({$} DISTINCT [номер накладной])
- count({State1} DISTINCT [номер накладной])
- count({State2} DISTINCT [номер накладной])
Существует проблема этого метода; разработчику QlikView необходимо дублировать выборки (списки и мультисписки) для всех трех состояний, чтобы конечный пользователь мог создавать соответствующие выборки для различных состояний. Во многих случаях разработчику QlikView потребуется иметь набор «общих» выборок, доступных для всех состояний. Это позволит конечному пользователю определять содержание для различных диаграмм, а затем использовать определенные выборки, чтобы продемонстрировать различия состояний. Анализ множеств может использоваться с состояниями для сохранения определенных выборок между различными состояниями.
- count({State1<Year = $::Year, Month = $::Month>} DISTINCT [номер накладной])
- count({State2<Year = $::Year, Month = $::Month>} DISTINCT [номер накладной])
Разработчик QlikView сохранит выборки Year и Month в состояниях State1 и State2, синхронизированными с выборками Year и Month в состоянии по умолчанию. Разработчик QlikView может добавить необходимые элементы к модификаторам множества для синхронизации еще большего числа полей между состояниями.
Операторы установки
С состояниями можно использовать операторы установки (+, *, -, /). Следующие выражения являются действительными и будут рассчитывать уникальные номера накладных в состоянии по умолчанию или состоянии State1.
Примеры:
- count({$ + State1} DISTINCT [номер накладной])
будут подсчитаны уникальные номера накладных в объединении состояний <default> и State1.
- count({1 - State1} DISTINCT [номер накладной])
будут подсчитаны уникальные номера накладных не в состоянии State1.
- count({State1 * State2} DISTINCT [номер накладной])
будут подсчитаны уникальные номера накладных в обоих состояниях <default> и State1.
Явные определения значения поля
Другой способ использования операторов установки — это функции элементов P() и E(). Эти функции доступны только в выражениях множества.
Примеры:
- count({$<[Invoice Number] = p({State1} [номер накладной])>} DISTINCT [номер накладной])
Это выражение подсчитывает уникальные номера накладных в состоянии <default> на основе возможных номеров накладных, доступных в состоянии State1.
Это почти, но не полностью эквивалентно следующему выражению:
- count({$<[Invoice Number] = State1::[Invoice Number]>} DISTINCT [номер накладной])
Различие между выражениями заключается в том, что в первом выражении возможные номера накладных из состояния State1 передаются в состояние по умолчанию. Во втором выражении выбранные значения из состояния State1 передаются в состояние по умолчанию. Если пользователь не создал выборки номеров накладных в состоянии State1, в состояние по умолчанию не будут переданы номера накладных
Операторы установки лучше всего использовать с модификаторами множества. Следующее выражение выполняет поиск пересечения возможных номеров накладных из состояний State1 и State2 и передает эти значения в номера накладных в состоянии по умолчанию.
Примеры:
- count({$<[Invoice Number] = p({State1} [номер накладной]) * p({State2} [номер накладной])>} DISTINCT [номер накладной])
Следующее выражение выполняет поиск пересечения номеров накладных из состояний <default> и State1:
- count({$<[Invoice Number] = p({$} [номер накладной]) * p({State1} [номер накладной])>} DISTINCT [номер накладной])
Это выражение может казаться запутанным, поскольку использует состояние (<default> в данном примере) в функции элемента и идентификаторе множества. Необходимо помнить, что функция элемента p($) возвращает возможные значения в состоянии по умолчанию. Идентификатор множества/состояния {$} изменяется результатом функций элемента. Все выборки накладных, существующие в состоянии по умолчанию, переопределяются значениями из пересечения функций элементов.
Следует отметить, что приведенное выше выражение не является полностью совместимым, поскольку его нельзя синхронизировать с общими выборками между состоянием по умолчанию и состоянием State1. Ниже приведено выражение, выполняющее это:
Примеры:
- count({$<[Invoice Number] = p({$} [номер накладной]) * p({State1<Year = $::Year, Month = $::Month>} [номер накладной])>} DISTINCT [номер накладной])
Как и раньше, разработчик QlikView может добавлять поля в модификатор для синхронизации выборок между различными состояниями.